// Copyright 2022 iLogtail Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "common/UUIDUtil.h"

#if defined(__linux__)
#include <uuid/uuid.h>
#elif defined(_MSC_VER)
#include <Rpc.h>
#endif

using namespace std;

namespace logtail {

string CalculateRandomUUID() {
#if defined(__linux__)
    uuid_t in;
    uuid_generate_time(in);
    char out[128];
    uuid_unparse_upper(in, out);
    return string(out);
#elif defined(_MSC_VER)
    UUID uuid;
    UuidCreate(&uuid);
    unsigned char* str;
    UuidToString(&uuid, &str);
    string s((char*)str);
    RpcStringFree(&str);
    return s;
#endif
}

} // namespace logtail
